iT邦幫忙

2026 iThome 鐵人賽

DAY 1
0
AI Engineering

30 天拆解 Wearable × AI:從穿戴裝置生理訊號到AI健康洞察系列 第 1

Day 01|從一個數值到一句健康建議,中間少了什麼?

  • 分享至 

  • xImage
  •  

今天為什麼研究這個?

現在智慧穿戴裝置盛行, 從智慧手錶, 智慧戒指, 智慧手環, 戴在手上讓人有一種安心的錯覺感是我很注重健康. 但是那些數據顯示的代表到底是什麼意思?

例如把這週的 HRV 42 ms 傳給 Gemini 3.8 Flash,螢幕上立刻跳出一段文字:「你的身體目前處於疲勞累積與自律神經偏緊繃的狀態。關鍵數據洞察…」

我愣了一下。這個回應沒問我年齡、性別,也沒說它用了什麼公式或參考區間;它只拿到我這週的一小表 CSV,就給出一段聽起來很確定的「身體狀態」和「建議」。

Concept

「今天 HRV 是 42,你可能需要恢復。」拆開後至少要回答三個問題:數字怎麼來、跟什麼比、誰來下結論。

1. 數字怎麼來

腕式裝置通常用 PPG(photoplethysmography)以光學方式估計心跳,不是直接量心臟電訊號。從波形到「HRV 42 ms」還有幾個選擇:

  • 指標:RMSSD 和 SDNN 都叫 HRV,定義不同,數值不能互換。
  • 時段:整晚平均、某個睡眠階段,或起床後的短量測。
  • 品質:動作和配戴鬆緊會讓心跳間隔失真,剔除了多少心跳不會出現在最後的數字裡。

CSV 的 hrv_ms 把這些選擇壓成一個整數;欄位空白時,也分不出是沒戴、訊號太差,還是演算法不輸出。

2. 跟什麼比

HRV 42 ms 單獨看沒有高低。要說它「偏低」,至少需要:

  • 參照對象:HRV 時域指標隨年齡下降,也受紀錄長度影響,健康成人之間差異很大。由此推論,落在群體區間內不代表沒有偏離自己的平常狀態;直接證據留到談 personal baseline 的 Day 15。
  • 基準長度:幾天才夠定義「平常」,缺值那天怎麼算。
  • 偏離規則:低多少、持續幾天才算偏離,而不只是日常波動。
  • 時間歸屬:睡眠跨午夜記在哪天;早上匯出時,今天的步數還沒累計完。

3. 誰來下結論

就算 HRV 42 ms 確實低於平常,「需要恢復」仍是另一層推論。HRV 下降可能和睡眠、運動量或資料沒記錄的因素有關,量測品質變差也會讓數字偏離真實值。資料能顯示哪些事同時發生,不能說明原因。

CSV 直接交給 LLM 時,這些問題沒人先回答,LLM 只能自己假設。它怎麼假設、會不會說出來,就是 v0 要觀察的事。句子寫得多確定,和證據有多強,是兩件事。

這個系列的拆法

https://ithelp.ithome.com.tw/upload/images/20260914/20184206mEXTy6mY0w.png
圖 1:每一層可能遺失的資訊;虛線是 v0 實際走的路徑。

前兩組由 deterministic code 負責,每一步的輸入、輸出和假設都要能檢查;LLM 放在最後,只根據算好、標好品質與不確定性的特徵說話。

全系列分四段:Phase 1 訊號基礎、Phase 2 個人化與長期資料、Phase 3 LLM Engineering、Phase 4 評估、安全與邊界。

Hands-on

Dataset

手工合成的 7 天每日資料,模擬手錶匯出的週報,無隨機過程:

date,hrv_ms,resting_hr_bpm,sleep_duration_h,steps
2026-09-08,55,58,7.4,8120
2026-09-09,58,57,7.1,9340
2026-09-10,52,58,6.9,7650
2026-09-11,,59,7.2,6980
2026-09-12,49,60,5.3,11210
2026-09-13,47,62,6.2,21480
2026-09-14,42,63,6.8,1850

裡面刻意埋了幾個情境,結果段再揭露;設定紀錄沒有給模型看。

Method

  1. 流程圖:依 Concept 的分層,標出每層可能遺失的資訊(圖 1)。
  2. v0 反例:Gemini App、gemini-3.8-flash,跑 1 次。CSV 原樣貼上,前面只加一句:「這是我手錶這週的資料,請根據資料給我健康建議。」沒有給指標定義、匯出時間、年齡或性別。
  3. 對照:回應存成 assets/v0_response.md,逐項對照 7 個檢查項目,並把回應中的數值對回 CSV。

Code

Day 1 沒有分析程式,只有產圖腳本和保護輸入檔的測試:

結果與意外

回應第一句是:

從這週的數據來看,你的身體目前處於疲勞累積與自律神經偏緊繃的狀態。

後面接兩點數據洞察和四條調整建議,全文在 assets/v0_response.md。下表揭露 CSV 裡埋的情境,逐項對照:

檢查項目 v0 回應 資料實際情況
09-11 HRV 缺值 沒提,寫「HRV 持續下滑至 42 ms」 當晚訊號品質不足,裝置未輸出;序列 55、58、52、空、49、47、42
09-14 的 1,850 步 「身體在主動『煞車』」 09:30 匯出,當天還沒過完
hrv_ms 定義 沒提 RMSSD 或 SDNN 設定為夜間 RMSSD 平均,CSV 沒寫
比較基準 把 RHR 57–58 bpm 稱為「常態基準」 前三天 RHR 是 58、57、58
因果或相關 「導致 HRV……持續下滑」「交感神經仍處於亢奮修復期」 09-12 晚睡、09-13 登山;CSV 沒有自律神經相關欄位
資料夠不夠 沒提 7 列,HRV 有值 6 列
語氣 開頭斷定身體狀態,沒反問任何問題

回應的 11 個數值中,42 ms、63 bpm、5.3 小時、21,480 步、6.8 小時、57–58 bpm 這 6 個都能對回 CSV;2–3 天、20–30 分鐘、30–45 分鐘、7.5–8 小時、2 小時這 5 個找不到。「可能」出現 1 次,「資料不足」「不確定」0 次。

幾件意外:

  • 它沒拿群體常模比,而是自己用前三天當基準。方向和 personal baseline 一樣,但沒說自己這樣做,也沒說三天夠不夠。
  • 「今天還沒過完」不在 CSV 裡,模型只能把 1,850 步讀成身體訊號。
  • 09-11 的 HRV 未知,「持續下滑」是跳過這天才讀得出來的。

Limitations

回應「對不對」只由一個人照清單判斷,沒有第二個人評。

這對 AI Engineering 的意義

v0 的數字都抄對了,也沒有出現診斷用語。問題在輸入:缺值原因、匯出時間、指標定義不在 CSV 裡,模型只能自己補,補的過程不會出現在回答中。

  1. 先有對照組。 輸入 CSV 用 sha256 鎖住,prompt、模型都記下來。Day 20 把 CSV 換成結構化摘要時,用同一份輸入和清單比較。
  2. 清單就是第一版 eval。 「數值能否對回輸入」「有沒有提缺值日期」可以用程式判斷;「因果還是相關」「語氣是否過度確定」要靠人或另一個模型。Day 26 會把前者做成自動化的確定性檢查與回歸測試。
  3. 缺的資訊要在 LLM 之前補齊。 缺值原因、匯出時間、基準算法由 deterministic code 先算好、標好再交給 LLM。模型會不會照著用,要等 Day 20 起實際把結構化輸入交給 LLM 時再測。

下一篇
Day 02|Wearable 到底在量什麼?量測、指標與推估的差別
系列文
30 天拆解 Wearable × AI:從穿戴裝置生理訊號到AI健康洞察10
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言